package com.example.Controller.Collect;

import com.example.Entity.Dto.PageParmar;
import com.example.Entity.Po.tn_sys_collect;
import com.example.Entity.Vo.APIResult;
import com.example.IService.ICollectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@RestController
@RequestMapping("/API/Collect")
@Api(tags = "用户收藏控制器")
public class CollectController {
    @Resource
    ICollectService iCollectService;

    /**
     * 获取用户的收藏夹
     * @param pageParmar 分页
     * @return APIResult
     */
    @PostMapping("/GetUserCollect")
    @ApiOperation("获取用户的收藏记录")
    public APIResult GetUserCollect(@RequestBody PageParmar pageParmar){
        return iCollectService.GetUserCollect(pageParmar);
    }

    /**
     * 获取用户的垃圾桶内的收藏夹
     * @param pageParmar 分页
     * @return APIResult
     */
    @PostMapping("/GetUserRecycleBin")
    @ApiOperation("获取用户的垃圾桶内的收藏夹")
    public APIResult GetUserRecycleBin(@RequestBody PageParmar pageParmar){
        return iCollectService.GetUserRecycleBin(pageParmar);
    }

    /**
     * 获取所有的分享收藏夹
     * @param pageParmar 分页
     * @return APIResult
     */
    @PostMapping("/GetShareCollect")
    @ApiOperation("获取所有的分享收藏夹")
    public APIResult GetShareCollect(@RequestBody PageParmar pageParmar){
        return iCollectService.GetShareCollect(pageParmar);
    }

    /**
     * 添加用户的收藏夹
     * @param sysCollect 数据
     * @return APIResult
     */
    @PostMapping("/AddUserCollect")
    @ApiOperation("添加用户的收藏夹")
    public APIResult AddUserCollect(@RequestBody tn_sys_collect sysCollect){
        return iCollectService.AddUserCollect(sysCollect);
    }

    /**
     * 删除用户的收藏夹（假删除）
     * @param uuid 唯一标识符
     * @return APIResult
     */
    @GetMapping("/FalseDeleteUserCollect")
    @ApiOperation("删除用户的收藏夹（假删除）")
    public APIResult FalseDeleteUserCollect(String uuid){
        return iCollectService.FalseDeleteUserCollect(uuid);
    }

    /**
     * 删除用户的收藏夹
     * @param uuid 唯一标识符
     * @return APIResult
     */
    @GetMapping("/DeleteUserCollect")
    @ApiOperation("删除用户的收藏夹")
    public APIResult DeleteUserCollect(String uuid){
        return iCollectService.DeleteUserCollect(uuid);
    }

    /**
     * 恢复用户的收藏夹
     * @param uuid 唯一标识符
     * @return APIResult
     */
    @GetMapping("/RecoverUserCollect")
    @ApiOperation("恢复用户的收藏夹")
    public APIResult RecoverUserCollect(String uuid){
        return iCollectService.RecoverUserCollect(uuid);
    }

    /**
     * 用户分享收藏夹
     * @param uuid 唯一标识符
     * @return APIResult
     */
    @GetMapping("/UserShareCollect")
    @ApiOperation("用户分享收藏夹")
    public APIResult UserShareCollect(String uuid){
        return iCollectService.UserShareCollect(uuid);
    }

    /**
     * 取消分享
     * @param uuid 唯一标识符
     * @return APIResult
     */
    @GetMapping("/CancelCollect")
    public APIResult CancelCollect(String uuid){
        return iCollectService.CancelCollect(uuid);
    }

    /**
     * 修改文件夹
     * @param uuid 收藏的guid
     * @param foldername 文件夹名称
     * @return APIResult
     */
    @GetMapping("/UpdateCollectFolder")
    public APIResult UpdateCollectFolder(String uuid,String foldername){
        return iCollectService.UpdateCollectFolder(uuid,foldername);
    }

    /**
     * 修改收藏内容
     * @param sysCollect 数据
     * @return APIResult
     */
    @PostMapping("/UpdateCollect")
    public APIResult UpdateCollect(@RequestBody tn_sys_collect sysCollect){
        return iCollectService.UpdateCollect(sysCollect);
    }

    /**
     * 将公共的收藏添加到我的收藏中
     * @param uuid 唯一标识符
     * @param filename 文件夹名称
     * @return APIResult
     */
    @GetMapping("/AddCopyUserCollect")
    public APIResult AddCopyUserCollect(String uuid,String filename){
        return iCollectService.AddCopyUserCollect(uuid,filename);
    }
}
